<?php

/**************************************************************************
 **** в данном контроллере реализованы все "социальные" элементы сайта ****
 **** такие как: добавление в друзья, комментарии и личные сообщения ****** 
 *************************************************************************/

class SocialController extends CustomControllerAction{
    
    //****************************************************************
    // **************** начало работы с друзьями *********************
    //****************************************************************
    
    // добавление в друзья
    public function addasfriendAction() {
        $id1 = Zend_Auth::getInstance()->getIdentity()->id;
        $id2 = $this->getRequest()->getPost('id');
        DatabaseObject_Friends::SendRequest($this->db, $id1, $id2);
        
        // отправим уведомление о новой заявке в друзья
        $userNotificationConfig = new DatabaseObject_NotificationSettings($this->db);
        $userNotificationConfig->load($id2, 'idUser');
        
        if($userNotificationConfig && $userNotificationConfig->new_req == 1) {
            DatabaseObject_User::SendNotificationEmail($this->db, 'new_req', $id2);
        }
        
        echo $this->sendJSON('ok');
        exit;
    }
    
    // одобрение заявки на дружбу
    public function acceptfriendAction() {
        $id1 = $this->getRequest()->getPost('id');
        $id2 = Zend_Auth::getInstance()->getIdentity()->id;
        
        DatabaseObject_Friends::ApproveRequest($this->db, $id1, $id2);
        
        // отправим уведомление об одобрении заявки
        $userNotificationConfig = new DatabaseObject_NotificationSettings($this->db);
        $userNotificationConfig->load($id1, 'idUser');
        
        if($userNotificationConfig && $userNotificationConfig->acc_req == 1) {
            DatabaseObject_User::SendNotificationEmail($this->db, 'acc_req', $id1);
        }
        
        echo $this->sendJSON('ok');
        exit;
    }
    
    // отклонение заявки на дружбу
    public function declinefriendAction() {
        $id1 = $this->getRequest()->getPost('id');
        $id2 = Zend_Auth::getInstance()->getIdentity()->id;
        
        DatabaseObject_Friends::DeclineRequest($this->db, $id1, $id2);
        echo $this->sendJSON('ok');
        exit;
    }
    
    // удаление из друзей
    public function deletefriendAction() {
        $id1 = $this->getRequest()->getPost('id');
        $id2 = Zend_Auth::getInstance()->getIdentity()->id;
        
        DatabaseObject_Friends::RemoveFriend($this->db, $id1, $id2);
        echo $this->sendJSON('ok');
        exit;
    }
    
    // одобрение всех заявок на дружбу сразу
    public function approveallfriendsAction() {
        $id = Zend_Auth::getInstance()->getIdentity()->id;
        
        DatabaseObject_Friends::ApproveAllRequests($this->db, $id);
        echo $this->sendJSON('ok');
        exit;
    }
    
    // отклонение всех заявок на дружбу сразу
    public function declineallfriendsAction() {
        $id = Zend_Auth::getInstance()->getIdentity()->id;
        
        DatabaseObject_Friends::DeclineAllRequests($this->db, $id);
        echo $this->sendJSON('ok');
        exit;
    }
    
    // отмена заявки на дружбу
    public function cancelrequestAction() {
        $id1 = Zend_Auth::getInstance()->getIdentity()->id;
        //$id2 = $this->getRequest()->getPost('id');
        $id2 = $this->getRequest()->getQuery('user');
        
        DatabaseObject_Friends::CancelRequest($this->db, $id1, $id2);
        echo $this->sendJSON('ok');
        exit;
    }
    
    //****************************************************************
    // **************** конец работы с друзьями **********************
    //****************************************************************
    //----------------------------------------------------------------
    //****************************************************************
    // **************** начало работы с личными сообщениями **********
    //****************************************************************
    
    // отправка личного сообщения
    public function sendpmAction() {
        $id = $this->getRequest()->getPost('id');
        
        $pm = new DatabaseObject_Pm($this->db);
        $pm->from = Zend_Auth::getInstance()->getIdentity()->id;
        $pm->to = $id;
        $pm->text = $this->getRequest()->getPost('text');
        
        $pm->save();
    }
    
    // удаление личного сообщения
    public function deletepmAction() {
        $id = $this->getRequest()->getPost('id');
        
        $pm = new DatabaseObject_Pm($this->db);
        $pm->load($id);
        $pm->delete();
    }
    
    //****************************************************************
    // **************** конец работы с личными сообщениями **********
    //****************************************************************
}

?>